/*
ajax 请求函数模块
*/
import axios from 'axios'
import Qs from 'qs'
import {Toast} from "vant";

export default function ajax(url = '', data = {}, type = 'GET') {
  return new Promise(function (resolve, reject) {
    let promise

    // 添加请求拦截器
    axios.interceptors.request.use(function (config) {
      // 在发送请求之前做些什么
      //添加一个请求等待loading
      Toast({
        type:'loading',
        mask:false,
        loadingType:'spinner',
      })
      //添加token
      if (localStorage.getItem('token')) {
        config.headers.token = localStorage.getItem('token');
      }
      return config
    }, function (error) {
      // 对请求错误做些什么
      Toast.clear();
      Toast('请求发生错误,请稍后再试!');
      return Promise.reject(error)
    });

// 添加响应拦截器
    axios.interceptors.response.use(function (res) {
      // 对响应数据做点什么
      Toast.clear();
      if(!res.data.status){
        Toast(res.data.message)
      }
      return res
    }, function (error) {
      // 对响应错误做点什么
      Toast.clear();
      Toast('响应发生错误,请稍后再试!');
      return Promise.reject(error)
    });



    if (type === 'GET') {
// 准备 url query 参数数据
      let dataStr = '' // 数据拼接字符串
      Object.keys(data).forEach(key => {
        dataStr += key + '=' + data[key] + '&'
      })
      if (dataStr !== '') {
        dataStr = dataStr.substring(0, dataStr.lastIndexOf('&'))
        url = url + '?' + dataStr
      }

// 发送 get 请求
      promise = axios.get(url)
    } else {
// 发送 post 请求
      promise = axios.post(url, Qs.stringify(data))
    }
    promise.then(response => {
      resolve(response.data)
    })
      .catch(error => {
        reject(error)
      })
  })
}
